// PROGRAMA : SCRP1540
// SISTEMA : SISP - SISTEMA DE INFORMACOES DE SEGURANCA PUBLICA
// IDENTIFICACAO CRIMINAL
// BIBLIOTECA : SISP
// CLIENTE : GEJUSPC - GERENCIA DE ESTADO DA JUSTICA, SEGURANCA
// PUBLICA E CIDADANIA / INSTITUTO DE IDENT.
// OBJETIVO : MANUTENCAO DE USUARIOS - RELATORIO
// PROGRAMADOR: JOSE ANTONIO COELHO
// DATA : 21 DE AGOSTO DE 1997
// ALTERACAO : 10/06/1999 POR SOLON MIRANDA

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;

import net.sf.jasperreports.engine.JRException;

import org.apache.commons.lang3.StringUtils;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrp1540Report;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Relatorio;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1540 OBJETIVO : MANUTENCAO DE USUARIOS - RELATORIO *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/scrp1540")
public class Scrp1540 {
	// Views utilizadas
	SicSenha senhaView = new SicSenha();
	SicSenha senhaView2 = new SicSenha();
	// Telas/relatorios utilizados
	Scrp1540Report report;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001; // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	private int jData;
	Relatorio relatorio;
	Scrp1540 scrp1540Anterior;
	private String faseproc = "0";

	private Relatorio preMapas() {
		primeiraVez = true;
		relatorio = new Relatorio(primeiraVez, sessao);
		relatorio.setNavegar("../scrp1540/executar");
		relatorio.setTitulo("MANUTENCAO DE USUARIOS");
		relatorio.setSessao(sessao);
		result.include("relatorio", relatorio);
		sessao.setAtributo("SCRP1540", this);
		if (!relatorio.getFuncao().equals("3")) {
			relatorio.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
		}
		faseproc = "0";
		return relatorio;
	}

	public Scrp1540(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public InputStreamDownload executar(Relatorio relatorio) {
		try {
			return main(relatorio);
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroScrcerro(e, sessao, this.getClass().getSimpleName());
		}
		return null;
	}

	private InputStreamDownload main(Relatorio prelatorio) throws ParseException, JRException, FileNotFoundException {

		if (prelatorio == null) {

			preMapas();
			relatorio.receberTela(true, result);
			return null;
		} else {
			restaurarEstados(prelatorio);
			relatorio.receberTela(false, result);
			if (relatorio.getFuncao().equals("3"))
				return null;

		}

		if (faseproc == null) {

			preMapas();

			return null;
		}

		// RELATORIO 1 PS=60 LS=133
		report = new Scrp1540Report();
		report.setPageSize(60);
		report.setLineSize(133);

		report.setDatacorrente(UtilBean.obtemDataCorrente());
		report.setDatacorrente(UtilBean.inverteDataCorrente());

		// RELATORIO
		sessao.getScrg001().setWVltw(14);
		sessao.getScrg001().setWProgramaw(this.getClass().getSimpleName());
		// Par�grafo: rd0()
		while (senhaView.leituraNome()) {
			// READADA

			report.setJmatriculacadastrou(senhaView.getMatAtualizador());
			report.setJmatriculacadastrado(senhaView.getMatricula());
			report.setJnomecadastrado(senhaView.getNome());
			report.setJseunivel(String.valueOf(senhaView.getNivel()));
			jData = senhaView.getDataProc();
			report.setJhora(senhaView.getHoraProc());
			report.setJdatas(UtilBean.inverteData(jData));
			// Par�grafo: fd1()
			senhaView2.consultaMatricula(report.getJmatriculacadastrou());
			if (senhaView2.registrosProcessados() == 0) {
				report.setJnomecadastrou(StringUtils.repeat("*", 30));
			} else {
				report.setJnomecadastrou(senhaView2.getNome());
			}
			//
			senhaView2.fecha();

			// report.gravaRelatorio(1);
			// RELATORIO
			report.gravaRelatorio(2);
			if (report.getPageLine() == report.getPageSize() - 1) {
				report.gravaRelatorio(3);
			}
			// UtilBean.mensagemTexto("-");
			// RELATORIO

		}
		UtilBean.salvaAcao("br.com.vti.sisp.mb.programa.Scrp1000"); // STACK
		senhaView.fecha();
		return report.imprimir();

	}

	private void restaurarEstados(Relatorio prelatorio) {
		this.scrp1540Anterior = (Scrp1540) sessao.getAtributo("SCRP1540");
		if (prelatorio != null) {
			relatorio = prelatorio;
		} else {
			relatorio = this.scrp1540Anterior.relatorio;
		}
		relatorio.setSessao(sessao);
		faseproc = scrp1540Anterior.faseproc;

	}

}
